unit UnDataModel;

interface

uses
  SysUtils, Classes,UnDataModule;

type
  TDataModuleAware = class
  private
    aDataSet : TDmDataSets;
  public
    constructor create(DataSet : TDmDataSets);
  end;

type
  TGebruiker = class(TDataModuleAware)
  private
    exists : boolean;
    aId : integer;
    aGebruikersNaam : String;
    aWachtwoord : string;
    procedure getDataSet;
  public
    constructor create(DataSet : TDmDataSets);
    function Login(GebruikersNaam,Wachtwoord : String) : boolean;
    property Id : Integer read aId write aId;
  end;

type
  TOnderzoeker = class(TDataModuleAware)
  private
    exists : boolean;
    aGebruiker : TGebruiker;
    procedure getDataSet;
    procedure getSysteemStatus;
  public
    OnderzoekerId : integer;
    constructor create(DataSet : TDmDataSets);
    function Login(GebruikersNaam,Wachtwoord : String) : boolean;
  end;

type
  TModule = class(TDataModuleAware)
  private
  public
    procedure getOfflineModules(var Lijst : TStringList);
    constructor create(DataSet : TDmDataSets);
  end;

implementation

constructor TDataModuleAware.create;
begin
  aDataSet := DataSet;
end;

////////////////////////////////////////////////////////////////////////////////
// Gebruiker
////////////////////////////////////////////////////////////////////////////////

constructor TGebruiker.create(DataSet : TDmDataSets);
begin
  inherited create(Dataset);
end;

procedure TGebruiker.getDataset;
begin
   with aDataSet.CdsLoginOnderzoeker do
  begin
    Params.ParamByName('GEBRUIKERSNAAM').AsString :=  aGebruikersNaam;
    Params.ParamByName('WACHTWOORD').AsString := aWachtwoord;
    Open;
    exists := RecordCount > 0;
    Id := Fields.FieldByName('ID').AsInteger;
    close;
  end;
end;

function TGebruiker.Login(GebruikersNaam: string; Wachtwoord: string) : boolean;
begin
  aGebruikersNaam := GebruikersNaam;
  aWachtwoord := Wachtwoord;
  getDataset;
  result := exists;
end;

////////////////////////////////////////////////////////////////////////////////
// Beheerder
////////////////////////////////////////////////////////////////////////////////
constructor TOnderzoeker.create(DataSet : TDmDataSets);
begin
  inherited create(Dataset);
end;

function TOnderzoeker.Login(GebruikersNaam,Wachtwoord : String) : boolean;
begin
  result := false;
  aGebruiker := TGebruiker.create(aDataSet);
  if aGebruiker.Login(GebruikersNaam,Wachtwoord) = true then
  begin
    getDataSet;
    if Exists = true then
    begin
      // getModule
      result := true;
    end;
  end;
  aGebruiker.Free;
end;

procedure TOnderzoeker.getDataSet;
begin
  with DmDataSets.CdsOnderzoeker do
  begin
    Params.ParamByName('GEBRUIKERS_ID').AsInteger := aGebruiker.aId;
    Open;
    exists := RecordCount > 0;
    if exists = true  then
    OnderzoekerId := Fields.FieldByName('ID').AsInteger;
    Close;
  end;
end;

procedure TOnderzoeker.getSysteemStatus;
begin

end;

constructor TModule.create(DataSet : TDmDataSets);
begin
  inherited create(DataSet);
end;

procedure TModule.getOfflineModules(var Lijst : TStringList);
begin

end;

end.
